package com.duyj.rule.rhino;


/**
 * 业务脚本对象<br>
 * 1.负责用户编写规则界面,可使用的规则<br>
 * 2.环境执行的时候js对象与java对象数据交互<br>
 */
public abstract class AbstractBizScriptableObject {
    /**
     * 注入JS环境中对象名称
     */
    private final String objectName;

    /**
     * 该对象需要注入的脚本
     */
    protected String scriptableJs = "";

    /**
     * @return scriptableJs
     */
    public String getScriptableJs() {
        return scriptableJs;
    }

    /**
     * <构造函数>
     */
    protected AbstractBizScriptableObject() {
        this.objectName = defineUniqueObjectName();
        this.scriptableJs = buildScriptableJs();
    }

    /**
     * 构建该对象上下文中的唯一标识
     *
     * @return
     */
    public abstract String defineUniqueObjectName();

    /**
     * 构建对象内的js
     *
     * @return
     */
    public abstract String buildScriptableJs();

    /**
     * 获取对象名称
     *
     * @return
     */
    public String getObjectName() {
        return objectName;
    }


}